In recent years, when information signals are communicated from a transmitter to a receiver via a communications channel, the information signals may be corrupted by noise associated with the channel. To help prevent such noise from corrupting the received information, a channel coding technique may be employed. Generally, coding which helps mitigate the effects of channel noise does so by introducing redundancy into the information to the communicators. Because of this redundancy, the likelihood that noise will corrupt communicated information is reduced.
Convolutional codes are a class of channel codes used to mitigate the effects of channel noise in the transmission of information. Convolutional codes are well known in the art and have been adopted as standards for certain types of communication systems. One such convolutional code is known in the art as a tail-biting convolutional code.
With tail-biting convolutional codes, a frame or block of information is encoded and communicated in a block-wise manner. The term “tail-biting” is used to refer to the fact that the encoder begins and ends in the same encoder state. The decoder is aware that the encoder begins and ends in the same state but is unaware of the value (or identity) of that state.
The maximum likelihood decoder for the convolutional codes is known in the art as a Viterbi decoder. As is well known, the Viterbi decoder treats the problem of decoding a sequence of received symbols as a problem of finding the most likely sequence of uncorrupted symbols given an actual corrupted sequence received. The maximum likelihood decoder for tail-biting convolutional code employs Viterbi decoding, but can place great demands on computational resources. Alternatively, if computational resources are minimised, the accuracy of the Viterbi decoding can suffer.